package DataStrucures;
//用数组实现栈（用于前中后缀表达式）

public class ArrayStackDemo {

    public static void main(String[] args) {
//        //利用栈来实现计算器原理
//       String s="3+2*6-2";
//
//       ArrayList<String> list=new ArrayList<>();
//       int index=0;
//
//       int j=0;
//        int num1=0;
//        int num2=0;
//       ArrayStack nums=new ArrayStack(10);
//       while(true){
//           if(index==s.length()){
//               break;
//           }
//           String s1=s.substring(index,index+1);
//           if(isOper(s1)==-1){
//               nums.push(Integer.parseInt(s1));
//           }
//           if(isOper(s1)!=-1){
//               if(j>=1){
//
//                   if(isOper(s1)==0&&isOper(list.get(j-1))==1){
//
//                        num1=nums.pop();
//                        num2=nums.pop();
//                       nums.push(jisuan(num1,num2,list.get(j-1)));
//                       list.remove(list.size() - 1);
//                       j--;
//                   }
//               }
//
//               list.add(s1);
//               j++;
//
//
//           }
//
//           index++;
//       }
//       nums.show();
//        System.out.println(list);
//       j=list.size();

//       while (true){
//           num1=nums.pop();
//           num2=nums.pop();
//           nums.push(jisuan(num2,num1,list.get(j-1)));
//           j--;
//           if(j<=0){
//               break;
//           }
//
//       }
//        nums.show();
//
//
//

    }
    public static int isOper(String a){//判断符号
        if("+".equals(a)||"-".equals(a))return 0;
        else if("/".equals(a)||"*".equals(a))return 1;
        else return -1;
    }
    public static int jisuan(int a,int b,String ch){
        if("+".equals(ch))return a+b;
        if("-".equals(ch))return a-b;
        if("*".equals(ch))return a*b;
        if("/".equals(ch))return a/b;
        return 0;
    }


}
class ArrayStack{
    private int maxSize;
    private int[] stack;
    private int top=-1;

    public ArrayStack(int maxSize) {
        this.maxSize = maxSize;
        stack =new int[this.maxSize];
    }
    //栈满
    public boolean isFull(){
        return top==maxSize-1;
    }//栈空
    public boolean isEmpty(){
        return top==-1;
    }
    //进栈
    public void push(int value){
        if(isFull()){
            System.out.println("栈已满");
            return;
        }
        top++;
        stack[top]=value;
    }
    //出栈
    public int pop(){
        if(isEmpty()){
            throw new RuntimeException("栈为空");

        }
        int value=stack[top];
        top--;
        return value;
    }
    public void show(){
        if(isEmpty()){
            System.out.println("栈空");
        }
        for (int i = top; i >=0; i--) {
            System.out.print(stack[i]+" ");
        }
    }




}

